home *** CD-ROM | disk | FTP | other *** search
/ The Epic Collection 3 / Epic Collection 3, The (1997)(Epic Marketing)[!].iso / useful_tools / tolleuhr / source / tulibinit.s < prev    next >
Text File  |  1996-01-04  |  3KB  |  158 lines

  1. ***************************************************************************
  2.  
  3. ; tolleuhr.library v37.1 - 15/11/95 by Gunther Nikl - first version
  4.  
  5. ***************************************************************************
  6.  
  7. ; include stuff
  8.  
  9.         include    exec/types.i
  10.         include    exec/resident.i
  11.         include    exec/libraries.i
  12.         include    exec/initializers.i
  13.         include    lvo30/exec_lib.i
  14.  
  15. ; specific defines
  16.  
  17. UHRVER        equ    37
  18. UHRREV        equ    1
  19.  
  20. ; macro stuff
  21.  
  22. RECALL        MACRO
  23.         jsr    _LVO\1(a6)
  24.         ENDM
  25.  
  26. LIBVEC        macro
  27.         dc.w    \1-FuncTab
  28.         endm
  29.  
  30. ; class base
  31.  
  32.     STRUCTURE ClassBase,36
  33.  
  34.      ULONG    cb_SegList
  35.      ULONG    cb_SysBase
  36.  
  37.     LABEL cb_SIZEOF
  38.  
  39. ***************************************************************************
  40.  
  41. start        moveq    #-1,d0
  42.         rts
  43.  
  44. ***************************************************************************
  45.  
  46. RomTag        dc.w    RTC_MATCHWORD
  47.         dc.l    RomTag
  48.         dc.l    EndTag
  49.         dc.b    RTF_AUTOINIT
  50.         dc.b    UHRVER
  51.         dc.b    NT_LIBRARY
  52.         dc.b    0
  53.         dc.l    LibName
  54.         dc.l    IdString
  55.         dc.l    InitTab
  56. EndTag
  57.  
  58. ;--------------------------------------------------------------------------
  59.  
  60. LibName        dc.b    'tolleuhr.library',0
  61. IdString    dc.b    'tolleuhr 37.1 (15.11.95)'
  62.         dc.b    ' by M.Fleischer and G.Nikl',13,10,0
  63.  
  64. ;--------------------------------------------------------------------------
  65.  
  66.         cnop    0,4
  67.  
  68. InitTab        dc.l    cb_SIZEOF
  69.         dc.l    FuncTab
  70.         dc.l    ResInfo
  71.         dc.l    InitFunc
  72.  
  73. ;--------------------------------------------------------------------------
  74.  
  75. FuncTab        dc.w    -1
  76.         LIBVEC    LibOpen
  77.         LIBVEC    LibClose
  78.         LIBVEC    LibExpunge
  79.         LIBVEC    LibExtFunc
  80.         LIBVEC    LibClock
  81.         dc.w    -1
  82.  
  83. ;--------------------------------------------------------------------------
  84.  
  85. ResInfo        INITBYTE LN_TYPE,NT_LIBRARY
  86.         INITLONG LN_NAME,LibName
  87.         INITBYTE LIB_FLAGS,(LIBF_SUMUSED!LIBF_CHANGED)
  88.         INITWORD LIB_VERSION,UHRVER
  89.         INITWORD LIB_REVISION,UHRREV
  90.         INITLONG LIB_IDSTRING,IdString
  91.         dc.w 0
  92.  
  93. ***************************************************************************
  94.  
  95.         cnop    0,4
  96.  
  97. InitFunc    suba.l    a1,a1
  98.         cmp.w    #37,20(a6)        ; need at least 2.04!
  99.         bcs.s    1$
  100. ;        btst    #1,297(a6)        ; need  at least a 68020!
  101. ;        beq.s    1$
  102.         move.l    d0,a1
  103.         move.l    a0,cb_SegList(a1)    ; save seglist
  104.         move.l    a6,cb_SysBase(a1)    ; cache SysBase (speed!)
  105. 1$        move.l    a1,d0
  106.         rts
  107.  
  108. ;--------------------------------------------------------------------------
  109.  
  110. LibOpen        addq.w    #1,32(a6)        ; one more user
  111.         and.b    #$f7,14(a6)
  112.         move.l    a6,d0
  113.         rts
  114. ;--------------------------------------------------------------------------
  115.  
  116. LibClose    subq.w    #1,32(a6)        ; one less user
  117.         bne.s    LibExtFunc
  118.         btst    #3,14(a6)
  119.         bne.s    LibExpunge        ; expunge!
  120.  
  121. ;--------------------------------------------------------------------------
  122.  
  123. LibExtFunc    moveq    #0,d0            ; reserved library entry
  124.         rts
  125.  
  126. ;--------------------------------------------------------------------------
  127.  
  128. LibExpunge    movem.l    a2/a5/a6,-(sp)
  129.         move.l    a6,a5
  130.         suba.l    a2,a2
  131.         or.b    #8,14(a5)        ; set LIBF_DELEXP
  132.         tst.w    32(a5)
  133.         bne.s    1$            ; still in use..
  134.         move.l    cb_SysBase(a5),a6
  135.         move.l    cb_SegList(a5),a2    ; get seglist
  136.         move.l    a5,a1
  137.         RECALL    Remove
  138.         move.l    a5,a1
  139.         moveq    #0,d0
  140.         move.w    16(a5),d0
  141.         suba.l    d0,a1
  142.         add.w    18(a5),d0
  143.         RECALL    FreeMem
  144. 1$        move.l    a2,d0            ; return SegList (or NULL)
  145.         movem.l    (sp)+,a2/a5/a6
  146.         rts
  147.  
  148. ;--------------------------------------------------------------------------
  149.  
  150. LibClock    move.l    a4,-(sp)
  151.         bsr.s    1$
  152.         move.l    (sp)+,a4
  153.         rts
  154.  
  155.         cnop    0,4
  156.  
  157. 1$        end
  158.